﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTServices.Dominio;
using System.Data.SqlClient;

namespace RESTServices.Persistencia
{
    public class SalaDAO
    {
        public Sala Crear(Sala salaACrear)
        {
            Sala salaCreada = null;
            string sql = "INSERT INTO sala VALUES(@cod,@nom,@tip,@hor,@est)";
            //using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena))
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", salaACrear.id_sala));
                    com.Parameters.Add(new SqlParameter("@nom", salaACrear.nombre));
                    com.Parameters.Add(new SqlParameter("@tip", salaACrear.tiposala));
                    com.Parameters.Add(new SqlParameter("@hor", salaACrear.horario));
                    com.Parameters.Add(new SqlParameter("@est", salaACrear.estado));
                    com.ExecuteNonQuery();
                }
            }
            salaCreada = Obtener(salaACrear.id_sala);
            return salaCreada;
        }

        public Sala Obtener(int id_sala)
        {
            Sala salaEncontrada = null;
            string sql = "select * from sala where id_sala=@cod";
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", id_sala));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            salaEncontrada = new Sala()
                            {
                                id_sala = (int)resultado["id_sala"],
                                nombre = (string)resultado["nombre"],
                                tiposala = (string)resultado["tiposala"],
                                horario = (string)resultado["horario"],
                                estado = (string)resultado["estado"]
                            };
                        }
                    }
                }

            }
            return salaEncontrada;
        }

        public Sala Obtener1(string nombre)
        {
            Sala salaEncontrada = null;
            string sql = "select * from sala where nombre=@nom";
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@nom", nombre));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            salaEncontrada = new Sala()
                            {
                                id_sala = (int)resultado["id_sala"],
                                nombre = (string)resultado["nombre"],
                                tiposala = (string)resultado["tiposala"],
                                horario = (string)resultado["horario"],
                                estado = (string)resultado["estado"]
                            };
                        }
                    }
                }

            }
            return salaEncontrada;
        }

        public Sala Modificar(Sala salaAModificar)
        {
            Sala salaModificada = null;
            string sql = "UPDATE sala SET nombre=@nom,tiposala=@tip,horario=@hor,estado=@est where id_sala=@cod";

            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {

                    com.Parameters.Add(new SqlParameter("@nom", salaAModificar.nombre));
                    com.Parameters.Add(new SqlParameter("@tip", salaAModificar.tiposala));
                    com.Parameters.Add(new SqlParameter("@hor", salaAModificar.horario));
                    com.Parameters.Add(new SqlParameter("@est", salaAModificar.estado));
                    com.Parameters.Add(new SqlParameter("@cod", salaAModificar.id_sala));
                    com.ExecuteNonQuery();

                }
            }
            salaModificada = Obtener(salaAModificar.id_sala);
            return salaModificada;
        }

        public void Eliminar(int id_sala)
        {

            string sql = "DELETE from sala where id_sala=@cod";
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", id_sala));
                    com.ExecuteNonQuery();
                }
            }

        }

        public List<Sala> ListarTodos()
        {
            List<Sala> salasEncontradas = new List<Sala>();
            Sala salaEncontrada = null;
            string sql = "SELECT * FROM sala order by id_sala";
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            salaEncontrada = new Sala()
                            {
                                id_sala = (int)resultado["id_sala"],
                                nombre = (string)resultado["nombre"],
                                tiposala = (string)resultado["tiposala"],
                                horario = (string)resultado["horario"],
                                estado = (string)resultado["estado"]
                            };
                            salasEncontradas.Add(salaEncontrada);
                        }
                    }
                }
            }
            return salasEncontradas;
        }

    }
}